<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="author" content="wangbo">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>组件拆分</title>
</head>

<body>
    <!-- 挂在点,渲染的标签 -->
    <div id="app"   >
    </div>
    <script src="../js/react.development.js"></script>
    <script src="../js/react-dom.development.js"></script>
    <script src="../js/prop-types.js"></script>
    <script src="../js/babel.min.js"></script>
    <script type="text/babel">
    // 首先要保证2个组件在一块,react 和vue 建议是有1个根标签
    // vue 比较好  <template>,
        class Serch extends React.Component {
            constructor(props) {
                super(props)
            }
            sclick = () => {
                this.props.pchg(30)
            }            
            render() {  
                // <React.Fragment> 和vue的template 很类似
            /* defaultValue 默认是静态的,只读的,是无法改变的,想要改变重新渲染标签,可以用key */
            // key 相当于组件的id 当改变了,默认触发diff算法,就会被重新渲染        
            
                return <React.Fragment>
                        <input   type="text" key={this.props.page}   defaultValue={this.props.page} />
                        <button  onClick={this.sclick}  >我是按钮</button>
                       </React.Fragment>
            }
        }
        class App extends React.Component {            
            state={age:20  }
            // 让其他的标签改变值得方法
            // 匿名语法 ,this是静态的,指向定义时候类,也就是App
            chg = (val) => { this.setState({age:val})    }
            // chg = function () {
            // }            
            render() {  
                // 引入哪个组件,用标签的写法  ,组件之间单向传值            
                return <React.Fragment>                                           
                        <Serch  page={this.state.age} pchg={this.chg} ></Serch>
                        <input  type="text" defaultValue={this.state.age}   placeholder="失去焦点的时候触发"/>
                    </React.Fragment>
            }
        }
        ReactDOM.render(<App  />, document.getElementById('app'))
    </script>

</body>

</html>